#ifndef __TRAJECTORYING
#define __TRAJECTORYING

#include "Routing.h"
#include "speed_data.h"
#include "pjp.h"
#include "pjsp.h"
#include "discretized_path.h"

struct TrajResult {
  std::vector<double> x;
  std::vector<double> y;
  std::vector<double> phi;
  std::vector<double> phi_x;
  std::vector<double> phi_y;
  std::vector<double> v;
  std::vector<double> a;
  std::vector<double> t;
  std::vector<double> steer;
  std::vector<double> kappa;
  std::vector<double> accumulated_s;
};

class Trajectorying {

public:
    Trajectorying() = default;
    ~Trajectorying() = default;
    bool PathParttion(std::vector<PathPoint>& result,
                      std::vector<TrajResult>* traj_result);
    bool GenerateSCurveSpeedAcceleration(TrajResult* traj_result);
    void Set_Result(TrajResult x) {final_result_ = x;}
    TrajResult GetResult() {return final_result_;}
    
private:
    TrajResult final_result_;
};






#endif //